package com.Blog.www.dao;

import com.Blog.www.po.BlogImg;
import com.Blog.www.po.UserBlog;

import java.util.List;

/**
 * 用户博客sql操作
 *
 * @author 君未洋
 */
public interface BlogDao {


    /**
     * 获取博客对应的图片的路径集合
     *
     * @param bid 博客id
     * @return 返回获取到的集合对象
     */
    List<BlogImg> findImgList(String bid);

    /**
     * 查询总记录数的方法
     *
     * @param status 输入的查询的状态
     * @return 返回重记录数
     */
    int findTotalCount(String status);

    /**
     * 查询总记录数的方法,
     *
     * @param status   输入的查询的状态
     * @param columnId 要查询的对应专栏的id
     * @return 返回重记录数
     */
    int findTotalCount(String columnId, String status);


    /**
     * 用来获取索引list集合的
     *
     * @param start  开始查询的地方
     * @param rows   每页显示条数
     * @param status 查询的状态
     * @return 返回结果集合
     */
    List<UserBlog> findByPage(int start, int rows, String status);

    /**
     * 用来获取索引list集合的
     *
     * @param columnId 专栏id
     * @param start    开始查询的地方
     * @param rows     每页显示条数
     * @param status   查询的状态
     * @return 返回结果集合
     */
    List<UserBlog> findByPage(String columnId, int start, int rows, String status);

    /**
     * 用户博客添加方法
     *
     * @param blog 博客类
     * @return 添加成功与否
     */
    Boolean addBlog(UserBlog blog);

    /**
     * 获取用户个人的总记录方法
     *
     * @param uid        用户id
     * @param status     状态
     * @param labelPrior 文章的前驱
     * @return 返回用户的所有文章集合
     */
    int findUserTotalCount(int uid, String status, String labelPrior);

    /**
     * 用户个人博客列表获取方法
     *
     * @param id         用户id
     * @param start      开始查询的地方
     * @param rows       每页显示的条数
     * @param status     状态
     * @param labelPrior 文章的前驱
     * @return 返回查询结果集合
     */
    List<UserBlog> findUserBlogList(int id, int start, int rows, String status, String labelPrior);

    /**
     * 通过用户id和文章id索引的查询方法
     *
     * @param id  文章id
     * @param uid 用户id,用户id可以不传入
     * @return 返回查询的用户文章
     */
    UserBlog findUserBlog(int id, int uid);

    /**
     * 通过文章内容和文章标题索引文章的方法
     *
     * @param title   文章标题
     * @param content 文章内容
     * @return 返回文章的封装类
     */
    UserBlog findUserBlog(String title, String content);

    /**
     * 博客修改数据库操作方法
     *
     * @param blog 传入要修改的博客
     * @return 返回修改成功与否
     */
    boolean updateBlog(UserBlog blog);

    /**
     * 通过id来删除博客的方法
     *
     * @param id 传入要删除博客的id
     * @return 返回删除成功与否
     */
    Boolean deleteBlog(int id);


    /**
     * 修改用户文章状态用方法
     *
     * @param uid    用户id
     * @param status 用户状态
     * @return 返回操作成功与否
     */
    Boolean changeUserBlog(int uid, String status);


    /**
     * 通过id索引来修改文章状态
     *
     * @param id     博客id
     * @param status 博客状态
     * @return 返回操作成功与否
     */
    Boolean changeBlog(String id, String status);


    /**
     * 通过关键字查询相符合的文章
     *
     * @param words 输入的关键字数组
     * @return 返回查询到的总记录数
     */
    int findWordsTotalCount(char[] words);


    /**
     * 搜索博客到的数组
     *
     * @param words 搜索的关键字
     * @param start 开始搜索页
     * @param rows  每页展示的条数
     * @return 返回封装好的集合
     */
    List<UserBlog> findBlogList(char[] words, int start, int rows);


    /**
     * 添加图片路径到博客数据库中
     *
     * @param bid     博客id
     * @param imgPath 图片路径
     * @return 返回添加是否成功
     */
    boolean addImg(String bid, String imgPath);
}
